/**
 * @author 陈泰来
 * @version V1.0
 * @Project echo-java-base
 * @Title java 迭代器
 * @Description java中为什么要引入迭代器?
 * ① 迭代器统一了对容器的访问方式，能够将遍历序列的操作与序列底层的结构分离
 * ② 这就是针对抽象编程的原则：对具体类的依赖性最小
 * @Package base.iterator
 * @date 2020/9/29 5:29 下午
 * @Copyright:学如逆水行舟，不进则退 .
 */
package base.iterator;

import java.util.*;

public class IteratorEx {

    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("元素1");
        list.add("元素2");
        list.add("元素3");

        Set<String> sets = new HashSet<>();
        sets.add("set元素1");
        sets.add("set元素2");
        sets.add("set元素3");

        Iterator<String> iteratorList = list.iterator();
        while (iteratorList.hasNext()) {
            System.out.println(iteratorList.next().toLowerCase());
            iteratorList.remove();
            System.out.println("current list size:" + list.size());
        }

        //即是类型由List变为Set，迭代器中的方法无需修改。因为我们压根不关心迭代器中具体的数据类型
        Iterator<String> iteratorSet = sets.iterator();
        while (iteratorSet.hasNext()) {
            System.out.println(iteratorSet.next().toLowerCase());
//            iteratorSet.remove();
            System.out.println("current sets size:" + sets.size());
        }

    }

}
